package com.yc.controller;

import com.github.pagehelper.PageHelper;
import com.yc.common.utils.UploadFileUtil;
import com.yc.service.impl.FeedbackServiceImpl;
import com.yc.service.impl.StudentInfoServiceImpl;
import com.yc.vo.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
import java.util.Map;

/**
 * @author zxy
 * @version 1.0
 * @date 2023/7/10 9:12
 */
@Api(tags = "小程序投诉与建议控制类")
//@RestController
public class FeedbackController {

    @Resource
    private FeedbackServiceImpl feedbackService;

    /**
     * 学生列表姓名查询
     *
     */
    @ApiOperation("学生列表姓名查询")
    @PostMapping("wx/selectnamelist")
    public List<Map<String, Object>> selectnamelist(int page){
        PageHelper.startPage(page, 10);
        List<Map<String,Object>> stulist = feedbackService.selectstuname();
        return stulist;

    }

    /**
     * 查询投诉信息
     *
     * @param id
     * @return
     */
    @ApiOperation("查询投诉信息")
    @PostMapping("wx/feedbackinfo")
    public Map<String, Object> feedbackinfo(int id,int readornot){
        feedbackService.insertreadornot(id);
        Map<String,Object> feedbackinfo = feedbackService.selectfeedbacklist(id);
        return feedbackinfo;
    }

    /**
     * 文件上传请求
     * @param file
     * @param request
     * @return 上传后的文件url
     */
    @ApiOperation("文件上传请求")
    @PostMapping("wx/upload")
    public Result demo(List<MultipartFile> file, HttpServletRequest request){
        String picRootName = "uploadPdfs"; // 上传到本地的文件夹名（自己定义
        // 调用工具类将文件保存到本地 并获取返回值（Map类型 数据是文件信息
        Map<String, UploadFileUtil.UploadFile> stringUploadFileMap
                = UploadFileUtil.uploadFiles(request, file, picRootName);
        String originalFilename = file.get(0).getOriginalFilename(); // 获取文件名（用于查找map集合中的新地址
        String newFilePath = stringUploadFileMap.get(originalFilename).getNewFileUrl(); // 获取map中的新地址
        return Result.success("上传成功",newFilePath);
    }

    /**
     * 数据存储请求（测试
     * @param stuid
     * @param description
     * @param state
     * @return
     */
    @ApiOperation("数据存储请求（测试")
    @PostMapping("wx/InsertFeedback")
    public Result<?> insertfeedback(@RequestParam("stuid") String stuid,
                               @RequestParam("description") String description,
                               @RequestParam("state") int state){
        if (description.isEmpty()){
            return Result.error("内容不能为空");
        } else {
            try{
                feedbackService.inserttest(stuid,description,state);
            } catch (Exception e) {
                e.printStackTrace();
                return Result.error("提交失败");
            }
            return Result.success("上传成功");
        }

    }

    /**
     * 数据存储请求（正式 包括文件存储
     * @param stuid
     * @param description
     * @param state
     * @return
     */
    @ApiOperation("数据存储请求（正式 包括文件存储")
    @PostMapping("wx/InsertFeedbackAll")
    public Result<?> insertFeedbackAll(@RequestParam("stuid") String stuid,// 学生id
                                       @RequestParam("description") String description,// 投诉内容
                                       @RequestParam("state") int state,// 是否匿名
                                       @RequestParam("newFilePath") String newFilePath
    ){
        if (description.isEmpty()){
            return Result.error("内容不能为空");
        } else {
            try{
                 feedbackService.insertAll(stuid,description,state,newFilePath); // 将数据存入数据库
            } catch (Exception e) {
                e.printStackTrace();
                return Result.error("提交失败");
            }
            return Result.success("上传成功");
        }

    }


}
